package biblioteca.ejb.dao;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import biblioteca.entities.Usuario;

@Stateless
public class UsuarioDAOImpl implements UsuarioDAORemote {

	@PersistenceContext(unitName="bibliotecaPU")
	private EntityManager em;

	@Override
	public Usuario autentica(String login, String senha) {
		Query autentica = em.createNamedQuery("autentica");
		autentica.setMaxResults(1);
		autentica.setParameter("login", login);
		autentica.setParameter("senha", senha);
		Usuario usr = null;
		try {
			usr = (Usuario) autentica.getSingleResult();
			if(usr!=null)
				System.err.println("Usuario retornou corretamente!");
			
		} catch (NoResultException nnfex) {
			System.err.println(nnfex.getMessage());
		}
		return usr;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Usuario> getUsuarios(int idUsurario) {
		Query consulta = em.createNamedQuery("getOutrosUsuarios");
		consulta.setParameter("idUsuario", idUsurario);
		return consulta.getResultList();
		
	}

	@Override
	public void removerUsuario(int idUsuario) {
		Usuario removerUsr = em.getReference(Usuario.class, idUsuario);
		
		if (removerUsr != null) {
			em.remove(removerUsr);
		}
	}

	@Override
	public void cadastrarUsuario(Usuario novo) {
		em.persist(novo);
	}

	
	public void alterarUsuario(Usuario alterar) {
		em.merge(alterar);
		
	}
}
